【数据库】SQL极速入门(多种方式查询用户复借次数)

  最近遇到这样一个事:许多DBA的小伙伴不太明白金融业务中复借用户的定义方式以及sql查询方式,给他们提需求也整不明白,需求如下:

  根据订单编号,查询用户该订单所对应的复借次数(白话讲就是:我有一笔订单,想看看这笔订单是用户在本平台的第几笔订单)

  既然他们整不明白,那就自己写吧。

  下面简单介绍下“复借”,再列举几种在mysql、oracle数据库中统计用户复借次数的方式。sql能力就是一点点提升的,希望能够抛砖引玉,窥一斑而知全豹。


一、如何定义复借

  复借是指在一个贷款平台借款订单还清后继续申请贷款的行为

  复借次数即为该用户累计成功借还款的总次数

  在数据库中,统计复借这个指标,用到的基本为还款表:即每个用户(user_id)的每一笔订单(apply_id)对应的还款情况(是否到期,是否成功还款)。

  基本思路:成功还款1次,复贷次数+1

  另外,考虑产品记期方式不同,我们分单期和多期两种产品来讨论

二、单期产品

方法1:Mysql之子查询计数

  简单的说,就是两张相同的表做左外联,统计user_id相同时,第一张表apply_id比第二张表apply_id大的数据

  内联子查询:生成两张相同的表,然后做左外联,这样表2中与表1user_id相同的数据就都会被查询得到,结果如下:

  再用where做一层判断,把表1比表2apply_id大的数据筛选出来。效果如下:

  对应的sql大致如下:

select * from
	(SELECT * FROM repayment ) a 
left join 
	(SELECT * FROM repayment ) b 
on a.user_id = b
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值